var runtime.sched
410 uses
runtime (current package)
cgocall.go#L311: hz := sched.profilehz
debug.go#L21: lock(&sched.lock)
debug.go#L23: unlock(&sched.lock)
debugcall.go#L230: lock(&sched.lock)
debugcall.go#L232: unlock(&sched.lock)
metrics.go#L455: hist.counts[0] = sched.timeToRun.underflow.Load()
metrics.go#L456: for i := range sched.timeToRun.counts {
metrics.go#L457: hist.counts[i+1] = sched.timeToRun.counts[i].Load()
metrics.go#L459: hist.counts[len(hist.counts)-1] = sched.timeToRun.overflow.Load()
metrics.go#L465: out.scalar = float64bits(nsToSec(sched.totalMutexWaitTime.Load()))
mgc.go#L1048: sched.idleTime.Store(0)
mgc.go#L1376: lock(&sched.lock)
mgc.go#L1378: unlock(&sched.lock)
mgc.go#L1659: lock(&sched.sudoglock)
mgc.go#L1661: for sg = sched.sudogcache; sg != nil; sg = sgnext {
mgc.go#L1665: sched.sudogcache = nil
mgc.go#L1666: unlock(&sched.sudoglock)
mgc.go#L1670: lock(&sched.deferlock)
mgc.go#L1674: for d = sched.deferpool; d != nil; d = dlink {
mgc.go#L1678: sched.deferpool = nil
mgc.go#L1679: unlock(&sched.deferlock)
mgclimit.go#L215: sched.idleTime.Add(duration)
mgclimit.go#L476: sched.idleTime.Add(duration)
mgcmark.go#L295: lock(&sched.gFree.lock)
mgcmark.go#L296: list := sched.gFree.stack
mgcmark.go#L297: sched.gFree.stack = gList{}
mgcmark.go#L298: unlock(&sched.gFree.lock)
mgcmark.go#L315: lock(&sched.gFree.lock)
mgcmark.go#L316: sched.gFree.noStack.pushAll(q)
mgcmark.go#L317: unlock(&sched.gFree.lock)
mgcmark.go#L1064: for !(gp.preempt && (preemptible || sched.gcwaiting.Load())) {
mgcmark.go#L1078: for !(gp.preempt && (preemptible || sched.gcwaiting.Load())) {
mstats.go#L957: s.totalTime = sched.totaltime + (now-sched.procresizetime)*int64(gomaxprocs)
mstats.go#L958: s.idleTime += sched.idleTime.Load()
panic.go#L354: if len(pp.deferpool) == 0 && sched.deferpool != nil {
panic.go#L355: lock(&sched.deferlock)
panic.go#L356: for len(pp.deferpool) < cap(pp.deferpool)/2 && sched.deferpool != nil {
panic.go#L357: d := sched.deferpool
panic.go#L358: sched.deferpool = d.link
panic.go#L362: unlock(&sched.deferlock)
panic.go#L420: lock(&sched.deferlock)
panic.go#L421: last.link = sched.deferpool
panic.go#L422: sched.deferpool = first
panic.go#L423: unlock(&sched.deferlock)
proc.go#L358: if !gp.preempt && sched.npidle.Load() > 0 {
proc.go#L426: lock(&sched.sudoglock)
proc.go#L428: for len(pp.sudogcache) < cap(pp.sudogcache)/2 && sched.sudogcache != nil {
proc.go#L429: s := sched.sudogcache
proc.go#L430: sched.sudogcache = s.next
proc.go#L434: unlock(&sched.sudoglock)
proc.go#L492: lock(&sched.sudoglock)
proc.go#L493: last.next = sched.sudogcache
proc.go#L494: sched.sudogcache = first
proc.go#L495: unlock(&sched.sudoglock)
proc.go#L695: lockInit(&sched.lock, lockRankSched)
proc.go#L696: lockInit(&sched.sysmonlock, lockRankSysmon)
proc.go#L697: lockInit(&sched.deferlock, lockRankDefer)
proc.go#L698: lockInit(&sched.sudoglock, lockRankSudog)
proc.go#L719: sched.maxmcount = 10000
proc.go#L755: lock(&sched.lock)
proc.go#L756: sched.lastpoll.Store(nanotime())
proc.go#L764: unlock(&sched.lock)
proc.go#L789: assertLockHeld(&sched.lock)
proc.go#L800: if count > sched.maxmcount {
proc.go#L801: print("runtime: program exceeds ", sched.maxmcount, "-thread limit\n")
proc.go#L811: assertLockHeld(&sched.lock)
proc.go#L813: if sched.mnext+1 < sched.mnext {
proc.go#L816: id := sched.mnext
proc.go#L817: sched.mnext++
proc.go#L831: lock(&sched.lock)
proc.go#L864: unlock(&sched.lock)
proc.go#L874: sched.nmspinning.Add(1)
proc.go#L875: sched.needspinning.Store(0)
proc.go#L958: sched.stopwait = freezeStopWait
proc.go#L959: sched.gcwaiting.Store(true)
proc.go#L1111: sched.totalMutexWaitTime.Add((now - gp.trackingStamp) * gTrackingPeriod)
proc.go#L1133: sched.timeToRun.record(gp.runnableTime)
proc.go#L1363: lock(&sched.lock)
proc.go#L1364: sched.stopwait = gomaxprocs
proc.go#L1365: sched.gcwaiting.Store(true)
proc.go#L1369: sched.stopwait--
proc.go#L1379: sched.stopwait--
proc.go#L1390: sched.stopwait--
proc.go#L1392: wait := sched.stopwait > 0
proc.go#L1393: unlock(&sched.lock)
proc.go#L1399: if notetsleep(&sched.stopnote, 100*1000) {
proc.go#L1400: noteclear(&sched.stopnote)
proc.go#L1409: if sched.stopwait != 0 {
proc.go#L1441: lock(&sched.lock)
proc.go#L1449: sched.gcwaiting.Store(false)
proc.go#L1450: if sched.sysmonwait.Load() {
proc.go#L1451: sched.sysmonwait.Store(false)
proc.go#L1452: notewakeup(&sched.sysmonnote)
proc.go#L1454: unlock(&sched.lock)
proc.go#L1662: lock(&sched.lock)
proc.go#L1663: sched.nmfreed++
proc.go#L1665: unlock(&sched.lock)
proc.go#L1684: lock(&sched.lock)
proc.go#L1703: mp.freelink = sched.freem
proc.go#L1704: sched.freem = mp
proc.go#L1705: unlock(&sched.lock)
proc.go#L1716: lock(&sched.lock)
proc.go#L1717: sched.nmfreed++
proc.go#L1719: unlock(&sched.lock)
proc.go#L1764: lock(&sched.lock)
proc.go#L1765: if sched.safePointWait != 0 {
proc.go#L1768: sched.safePointWait = gomaxprocs - 1
proc.go#L1769: sched.safePointFn = fn
proc.go#L1785: for p := sched.pidle.ptr(); p != nil; p = p.link.ptr() {
proc.go#L1788: sched.safePointWait--
proc.go#L1792: wait := sched.safePointWait > 0
proc.go#L1793: unlock(&sched.lock)
proc.go#L1819: if notetsleep(&sched.safePointNote, 100*1000) {
proc.go#L1820: noteclear(&sched.safePointNote)
proc.go#L1826: if sched.safePointWait != 0 {
proc.go#L1835: lock(&sched.lock)
proc.go#L1836: sched.safePointFn = nil
proc.go#L1837: unlock(&sched.lock)
proc.go#L1860: sched.safePointFn(p)
proc.go#L1861: lock(&sched.lock)
proc.go#L1862: sched.safePointWait--
proc.go#L1863: if sched.safePointWait == 0 {
proc.go#L1864: notewakeup(&sched.safePointNote)
proc.go#L1866: unlock(&sched.lock)
proc.go#L1904: if sched.freem != nil {
proc.go#L1905: lock(&sched.lock)
proc.go#L1907: for freem := sched.freem; freem != nil; {
proc.go#L1929: sched.freem = newList
proc.go#L1930: unlock(&sched.lock)
proc.go#L2076: sched.ngsys.Add(-1)
proc.go#L2135: gp.goid = sched.goidgen.Add(1)
proc.go#L2149: sched.ngsys.Add(1)
proc.go#L2192: sched.ngsys.Add(1)
proc.go#L2492: lock(&sched.lock)
proc.go#L2493: sched.nmsys++
proc.go#L2495: unlock(&sched.lock)
proc.go#L2533: lock(&sched.lock)
proc.go#L2535: unlock(&sched.lock)
proc.go#L2582: lock(&sched.lock)
proc.go#L2594: unlock(&sched.lock)
proc.go#L2617: unlock(&sched.lock)
proc.go#L2627: lock(&sched.lock)
proc.go#L2635: unlock(&sched.lock)
proc.go#L2664: if !runqempty(pp) || sched.runqsize != 0 {
proc.go#L2680: if sched.nmspinning.Load()+sched.npidle.Load() == 0 && sched.nmspinning.CompareAndSwap(0, 1) { // TODO: fast atomic
proc.go#L2681: sched.needspinning.Store(0)
proc.go#L2685: lock(&sched.lock)
proc.go#L2686: if sched.gcwaiting.Load() {
proc.go#L2688: sched.stopwait--
proc.go#L2689: if sched.stopwait == 0 {
proc.go#L2690: notewakeup(&sched.stopnote)
proc.go#L2692: unlock(&sched.lock)
proc.go#L2696: sched.safePointFn(pp)
proc.go#L2697: sched.safePointWait--
proc.go#L2698: if sched.safePointWait == 0 {
proc.go#L2699: notewakeup(&sched.safePointNote)
proc.go#L2702: if sched.runqsize != 0 {
proc.go#L2703: unlock(&sched.lock)
proc.go#L2709: if sched.npidle.Load() == gomaxprocs-1 && sched.lastpoll.Load() != 0 {
proc.go#L2710: unlock(&sched.lock)
proc.go#L2719: unlock(&sched.lock)
proc.go#L2732: if sched.nmspinning.Load() != 0 || !sched.nmspinning.CompareAndSwap(0, 1) {
proc.go#L2744: lock(&sched.lock)
proc.go#L2747: if sched.nmspinning.Add(-1) < 0 {
proc.go#L2750: unlock(&sched.lock)
proc.go#L2758: unlock(&sched.lock)
proc.go#L2816: if !sched.gcwaiting.Load() {
proc.go#L2823: if sched.nmspinning.Add(-1) < 0 {
proc.go#L2828: lock(&sched.lock)
proc.go#L2830: sched.stopwait--
proc.go#L2831: if sched.stopwait == 0 {
proc.go#L2832: notewakeup(&sched.stopnote)
proc.go#L2834: unlock(&sched.lock)
proc.go#L2870: hz := sched.profilehz
proc.go#L2900: if sched.gcwaiting.Load() {
proc.go#L2936: if pp.schedtick%61 == 0 && sched.runqsize > 0 {
proc.go#L2937: lock(&sched.lock)
proc.go#L2939: unlock(&sched.lock)
proc.go#L2961: if sched.runqsize != 0 {
proc.go#L2962: lock(&sched.lock)
proc.go#L2964: unlock(&sched.lock)
proc.go#L2977: if netpollinited() && netpollWaiters.Load() > 0 && sched.lastpoll.Load() != 0 {
proc.go#L2994: if mp.spinning || 2*sched.nmspinning.Load() < gomaxprocs-sched.npidle.Load() {
proc.go#L3062: lock(&sched.lock)
proc.go#L3063: if sched.gcwaiting.Load() || pp.runSafePointFn != 0 {
proc.go#L3064: unlock(&sched.lock)
proc.go#L3067: if sched.runqsize != 0 {
proc.go#L3069: unlock(&sched.lock)
proc.go#L3072: if !mp.spinning && sched.needspinning.Load() == 1 {
proc.go#L3075: unlock(&sched.lock)
proc.go#L3082: unlock(&sched.lock)
proc.go#L3123: if sched.nmspinning.Add(-1) < 0 {
proc.go#L3169: if netpollinited() && (netpollWaiters.Load() > 0 || pollUntil != 0) && sched.lastpoll.Swap(0) != 0 {
proc.go#L3170: sched.pollUntil.Store(pollUntil)
proc.go#L3194: sched.pollUntil.Store(0)
proc.go#L3195: sched.lastpoll.Store(now)
proc.go#L3202: lock(&sched.lock)
proc.go#L3204: unlock(&sched.lock)
proc.go#L3224: pollerPollUntil := sched.pollUntil.Load()
proc.go#L3238: if sched.runqsize != 0 {
proc.go#L3245: if netpollinited() && netpollWaiters.Load() > 0 && sched.lastpoll.Load() != 0 {
proc.go#L3270: if sched.gcwaiting.Load() {
proc.go#L3337: lock(&sched.lock)
proc.go#L3341: unlock(&sched.lock)
proc.go#L3344: unlock(&sched.lock)
proc.go#L3404: lock(&sched.lock)
proc.go#L3407: unlock(&sched.lock)
proc.go#L3414: unlock(&sched.lock)
proc.go#L3421: unlock(&sched.lock)
proc.go#L3426: unlock(&sched.lock)
proc.go#L3435: if sched.lastpoll.Load() == 0 {
proc.go#L3440: pollerPollUntil := sched.pollUntil.Load()
proc.go#L3459: nmspinning := sched.nmspinning.Add(-1)
proc.go#L3507: lock(&sched.lock)
proc.go#L3511: unlock(&sched.lock)
proc.go#L3517: unlock(&sched.lock)
proc.go#L3524: lock(&sched.lock)
proc.go#L3526: unlock(&sched.lock)
proc.go#L3531: npidle := int(sched.npidle.Load())
proc.go#L3539: lock(&sched.lock)
proc.go#L3541: unlock(&sched.lock)
proc.go#L3603: if sched.disable.user && !schedEnabled(gp) {
proc.go#L3607: lock(&sched.lock)
proc.go#L3611: unlock(&sched.lock)
proc.go#L3613: sched.disable.runnable.pushBack(gp)
proc.go#L3614: sched.disable.n++
proc.go#L3615: unlock(&sched.lock)
proc.go#L3756: lock(&sched.lock)
proc.go#L3758: unlock(&sched.lock)
proc.go#L3868: sched.ngsys.Add(-1)
proc.go#L4032: if sched.sysmonwait.Load() {
proc.go#L4049: if sched.gcwaiting.Load() {
proc.go#L4068: lock(&sched.lock)
proc.go#L4069: if sched.sysmonwait.Load() {
proc.go#L4070: sched.sysmonwait.Store(false)
proc.go#L4071: notewakeup(&sched.sysmonnote)
proc.go#L4073: unlock(&sched.lock)
proc.go#L4080: lock(&sched.lock)
proc.go#L4081: if sched.stopwait > 0 && atomic.Cas(&pp.status, _Psyscall, _Pgcstop) {
proc.go#L4087: if sched.stopwait--; sched.stopwait == 0 {
proc.go#L4088: notewakeup(&sched.stopnote)
proc.go#L4091: unlock(&sched.lock)
proc.go#L4202: if sched.disable.user && !schedEnabled(gp) {
proc.go#L4244: if sched.stopwait == freezeStopWait {
proc.go#L4257: if sched.pidle != 0 {
proc.go#L4303: lock(&sched.lock)
proc.go#L4305: if pp != nil && sched.sysmonwait.Load() {
proc.go#L4306: sched.sysmonwait.Store(false)
proc.go#L4307: notewakeup(&sched.sysmonnote)
proc.go#L4309: unlock(&sched.lock)
proc.go#L4326: lock(&sched.lock)
proc.go#L4341: } else if sched.sysmonwait.Load() {
proc.go#L4342: sched.sysmonwait.Store(false)
proc.go#L4343: notewakeup(&sched.sysmonnote)
proc.go#L4345: unlock(&sched.lock)
proc.go#L4538: sched.ngsys.Add(1)
proc.go#L4565: pp.goidcache = sched.goidgen.Add(_GoidCacheBatch)
proc.go#L4657: lock(&sched.gFree.lock)
proc.go#L4658: sched.gFree.noStack.pushAll(noStackQ)
proc.go#L4659: sched.gFree.stack.pushAll(stackQ)
proc.go#L4660: sched.gFree.n += inc
proc.go#L4661: unlock(&sched.gFree.lock)
proc.go#L4669: if pp.gFree.empty() && (!sched.gFree.stack.empty() || !sched.gFree.noStack.empty()) {
proc.go#L4670: lock(&sched.gFree.lock)
proc.go#L4674: gp := sched.gFree.stack.pop()
proc.go#L4676: gp = sched.gFree.noStack.pop()
proc.go#L4681: sched.gFree.n--
proc.go#L4685: unlock(&sched.gFree.lock)
proc.go#L4741: lock(&sched.gFree.lock)
proc.go#L4742: sched.gFree.noStack.pushAll(noStackQ)
proc.go#L4743: sched.gFree.stack.pushAll(stackQ)
proc.go#L4744: sched.gFree.n += inc
proc.go#L4745: unlock(&sched.gFree.lock)
proc.go#L4860: n := int32(atomic.Loaduintptr(&allglen)) - sched.gFree.n - sched.ngsys.Load()
proc.go#L4874: return int32(sched.mnext - sched.nmfreed)
proc.go#L5039: lock(&sched.lock)
proc.go#L5040: sched.profilehz = hz
proc.go#L5041: unlock(&sched.lock)
proc.go#L5093: assertLockHeld(&sched.lock)
proc.go#L5184: assertLockHeld(&sched.lock)
proc.go#L5197: if sched.procresizetime != 0 {
proc.go#L5198: sched.totaltime += int64(old) * (now - sched.procresizetime)
proc.go#L5200: sched.procresizetime = now
proc.go#L5388: lock(&sched.lock)
proc.go#L5389: sched.nmidlelocked += v
proc.go#L5393: unlock(&sched.lock)
proc.go#L5400: assertLockHeld(&sched.lock)
proc.go#L5426: run := mcount() - sched.nmidle - sched.nmidlelocked - sched.nmsys
proc.go#L5431: print("runtime: checkdead: nmidle=", sched.nmidle, " nmidlelocked=", sched.nmidlelocked, " mcount=", mcount(), " nmsys=", sched.nmsys, "\n")
proc.go#L5432: unlock(&sched.lock)
proc.go#L5450: unlock(&sched.lock)
proc.go#L5455: unlock(&sched.lock) // unlock so that GODEBUG=scheddetail=1 doesn't hang
proc.go#L5469: unlock(&sched.lock)
proc.go#L5476: unlock(&sched.lock)
proc.go#L5482: sched.nmspinning.Add(1)
proc.go#L5497: unlock(&sched.lock) // unlock so that GODEBUG=scheddetail=1 doesn't hang
proc.go#L5516: lock(&sched.lock)
proc.go#L5517: sched.nmsys++
proc.go#L5519: unlock(&sched.lock)
proc.go#L5552: if debug.schedtrace <= 0 && (sched.gcwaiting.Load() || sched.npidle.Load() == gomaxprocs) {
proc.go#L5553: lock(&sched.lock)
proc.go#L5554: if sched.gcwaiting.Load() || sched.npidle.Load() == gomaxprocs {
proc.go#L5558: sched.sysmonwait.Store(true)
proc.go#L5559: unlock(&sched.lock)
proc.go#L5570: syscallWake = notetsleep(&sched.sysmonnote, sleep)
proc.go#L5574: lock(&sched.lock)
proc.go#L5575: sched.sysmonwait.Store(false)
proc.go#L5576: noteclear(&sched.sysmonnote)
proc.go#L5583: unlock(&sched.lock)
proc.go#L5586: lock(&sched.sysmonlock)
proc.go#L5596: lastpoll := sched.lastpoll.Load()
proc.go#L5598: sched.lastpoll.CompareAndSwap(lastpoll, now)
proc.go#L5657: unlock(&sched.sysmonlock)
proc.go#L5714: if runqempty(pp) && sched.nmspinning.Load()+sched.npidle.Load() > 0 && pd.syscallwhen+10*1000*1000 > now {
proc.go#L5804: lock(&sched.lock)
proc.go#L5805: print("SCHED ", (now-starttime)/1e6, "ms: gomaxprocs=", gomaxprocs, " idleprocs=", sched.npidle.Load(), " threads=", mcount(), " spinningthreads=", sched.nmspinning.Load(), " needspinning=", sched.needspinning.Load(), " idlethreads=", sched.nmidle, " runqueue=", sched.runqsize)
proc.go#L5807: print(" gcwaiting=", sched.gcwaiting.Load(), " nmidlelocked=", sched.nmidlelocked, " stopwait=", sched.stopwait, " sysmonwait=", sched.sysmonwait.Load(), "\n")
proc.go#L5839: unlock(&sched.lock)
proc.go#L5881: unlock(&sched.lock)
proc.go#L5890: lock(&sched.lock)
proc.go#L5891: if sched.disable.user == !enable {
proc.go#L5892: unlock(&sched.lock)
proc.go#L5895: sched.disable.user = !enable
proc.go#L5897: n := sched.disable.n
proc.go#L5898: sched.disable.n = 0
proc.go#L5899: globrunqputbatch(&sched.disable.runnable, n)
proc.go#L5900: unlock(&sched.lock)
proc.go#L5901: for ; n != 0 && sched.npidle.Load() != 0; n-- {
proc.go#L5905: unlock(&sched.lock)
proc.go#L5914: assertLockHeld(&sched.lock)
proc.go#L5916: if sched.disable.user {
proc.go#L5928: assertLockHeld(&sched.lock)
proc.go#L5930: mp.schedlink = sched.midle
proc.go#L5931: sched.midle.set(mp)
proc.go#L5932: sched.nmidle++
proc.go#L5942: assertLockHeld(&sched.lock)
proc.go#L5944: mp := sched.midle.ptr()
proc.go#L5946: sched.midle = mp.schedlink
proc.go#L5947: sched.nmidle--
proc.go#L5958: assertLockHeld(&sched.lock)
proc.go#L5960: sched.runq.pushBack(gp)
proc.go#L5961: sched.runqsize++
proc.go#L5970: assertLockHeld(&sched.lock)
proc.go#L5972: sched.runq.push(gp)
proc.go#L5973: sched.runqsize++
proc.go#L5983: assertLockHeld(&sched.lock)
proc.go#L5985: sched.runq.pushBackAll(*batch)
proc.go#L5986: sched.runqsize += n
proc.go#L5993: assertLockHeld(&sched.lock)
proc.go#L5995: if sched.runqsize == 0 {
proc.go#L5999: n := sched.runqsize/gomaxprocs + 1
proc.go#L6000: if n > sched.runqsize {
proc.go#L6001: n = sched.runqsize
proc.go#L6010: sched.runqsize -= n
proc.go#L6012: gp := sched.runq.pop()
proc.go#L6015: gp1 := sched.runq.pop()
proc.go#L6097: assertLockHeld(&sched.lock)
proc.go#L6107: pp.link = sched.pidle
proc.go#L6108: sched.pidle.set(pp)
proc.go#L6109: sched.npidle.Add(1)
proc.go#L6124: assertLockHeld(&sched.lock)
proc.go#L6126: pp := sched.pidle.ptr()
proc.go#L6134: sched.pidle = pp.link
proc.go#L6135: sched.npidle.Add(-1)
proc.go#L6152: assertLockHeld(&sched.lock)
proc.go#L6159: sched.needspinning.Store(1)
proc.go#L6267: lock(&sched.lock)
proc.go#L6269: unlock(&sched.lock)
proc.go#L6301: lock(&sched.lock)
proc.go#L6303: unlock(&sched.lock)
proc.go#L6554: lock(&sched.lock)
proc.go#L6555: out = int(sched.maxmcount)
proc.go#L6557: sched.maxmcount = 0x7fffffff
proc.go#L6559: sched.maxmcount = int32(in)
proc.go#L6562: unlock(&sched.lock)
proc.go#L6615: if i >= active_spin || ncpu <= 1 || gomaxprocs <= sched.npidle.Load()+sched.nmspinning.Load()+1 {
runtime2.go#L1145: sched schedt
trace.go#L287: lock(&sched.sysmonlock)
trace.go#L298: unlock(&sched.sysmonlock)
trace.go#L401: unlock(&sched.sysmonlock)
trace.go#L418: lock(&sched.sysmonlock)
trace.go#L425: unlock(&sched.sysmonlock)
trace.go#L480: unlock(&sched.sysmonlock)
|
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |